package com.ccit.springbootlaw.service.impl;

import com.ccit.springbootlaw.mapper.UserMapper;
import com.ccit.springbootlaw.pojo.User;
import com.ccit.springbootlaw.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 用户服务实现类
 * 实现了UserService接口，提供了用户相关的业务逻辑
 */
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    /**
     * 根据ID查询用户
     *
     * @param id 用户ID
     * @return 返回找到的用户对象，如果未找到则返回null
     */
    @Override
    public User findById(int id) {
        return userMapper.findById(id);
    }

    /**
     * 根据邮箱查询用户
     *
     * @param email 用户邮箱
     * @return 返回找到的用户对象，如果未找到则返回null
     */
    @Override
    public User findByEmail(String email) {
        return userMapper.findByEmail(email);
    }

    /**
     * 根据实体类内容进行多条件查找
     *
     * @param user 包含查询条件的用户对象
     * @return 返回符合条件的用户列表
     */
    @Override
    public List<User> findUsersByConditions(User user) {
        return userMapper.findUsersByConditions(user);
    }

    /**
     * 根据用户名或ID或邮箱查询用户，并验证密码
     *
     * @param user 包含用户名、ID、邮箱和密码的用户对象
     * @return 返回找到的用户对象，如果未找到或密码不匹配则返回null
     */
    @Override
    public User findUserByUsernameOrIdOrEmailAndVerifyPassword(User user) {
        return userMapper.findUserByUsernameOrIdOrEmailAndVerifyPassword(user);
    }

    /**
     * 插入新用户
     *
     * @param user 用户对象
     * @return 返回插入操作影响的行数
     */
    @Override
    public int insertUser(User user) {
        return userMapper.insertUser(user);
    }

    /**
     * 更新用户信息
     *
     * @param user 包含更新信息的用户对象
     * @return 返回更新操作影响的行数
     */
    @Override
    public int updateUser(User user) {
        return userMapper.updateUser(user);
    }

    /**
     * 删除用户
     *
     * @param id 用户ID
     * @return 返回删除操作影响的行数
     */
    @Override
    public int deleteUserById(int id) {
        return userMapper.deleteUserById(id);
    }

    /**
     * 查询所有用户
     *
     * @return 返回所有用户的列表
     */
    @Override
    public List<User> findAllUsers() {
        return userMapper.findAllUsers();
    }
}